package com.sugar.queryinfo.module.business.dal.mysql.userextend;

import com.sugar.queryinfo.framework.common.pojo.PageResult;
import com.sugar.queryinfo.framework.mybatis.core.mapper.BaseMapperX;
import com.sugar.queryinfo.framework.mybatis.core.query.MPJLambdaWrapperX;
import com.sugar.queryinfo.module.business.dal.dataobject.userextend.UserExtendDO;
import com.sugar.queryinfo.module.system.dal.dataobject.dept.DeptDO;
import com.sugar.queryinfo.module.system.dal.dataobject.user.AdminUserDO;
import org.apache.ibatis.annotations.Mapper;
import com.sugar.queryinfo.module.business.controller.admin.userextend.vo.*;

/**
 * 用户信息拓展 Mapper
 *
 * @author Ysugar
 */
@Mapper
public interface UserExtendMapper extends BaseMapperX<UserExtendDO> {

    default PageResult<UserExtendRespVO> selectPage(UserExtendPageReqVO reqVO) {
        return selectJoinPage(reqVO, UserExtendRespVO.class, new MPJLambdaWrapperX<UserExtendDO>()
                .selectAll(UserExtendDO.class)
                .selectAs(AdminUserDO::getNickname, UserExtendRespVO::getNickname)
                .selectAs(AdminUserDO::getMobile, UserExtendRespVO::getMobile)
                .selectAs(DeptDO::getId, UserExtendRespVO::getDeptId)
                .selectAs(DeptDO::getName, UserExtendRespVO::getDeptName)
                .leftJoin(AdminUserDO.class, AdminUserDO::getId, UserExtendDO::getUserId)
                .leftJoin(DeptDO.class, DeptDO::getId, AdminUserDO::getDeptId)
                .eqIfPresent(UserExtendDO::getUserId, reqVO.getUserId())
                .likeIfPresent(AdminUserDO::getNickname, reqVO.getUserName())
                .betweenIfPresent(UserExtendDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(UserExtendDO::getId));
    }

}